home *** CD-ROM | disk | FTP | other *** search
/ Amiga Repair Kit / Amiga Repair Kit.iso / DiskSalv4_E / MakeBoot < prev    next >
Encoding:
Text File  |  1996-07-11  |  11.4 KB  |  311 lines

  1. ;======================================================================
  2. ;
  3. ; DiskSalv boot disk generator -- $VER: MakeBoot 11.4 (12.8.93)
  4. ;
  5. ; 11.4    Added additional libraries for copy.
  6. ;    Now copies "Devs:system-configuration" for better preferences
  7. ;       support.
  8. ;    Better checks in place for existance of locale archives.
  9. ; 11.3    Bugs fixed in library copy pattern.
  10. ;
  11. ;======================================================================
  12. ;
  13. ; Some basic strings
  14.  
  15. (set #disksalv-install 
  16.      (cat "\nDiskSalv Boot Disk Generator"
  17.           "\n\nDieses Hilfsprogramm wird eine Diskette formatieren und"
  18.           " DiskSalv und einige weitere Dateien von Ihrer Festplatte"
  19.           " installieren. Als Ergebnis erhalten Sie eine bootfähige"
  20.           " Diskette, die DiskSalv 4 enthält."
  21.           "\n\nMöchten Sie damit fortfahren?"))
  22.  
  23. (set #disksalv-install-help
  24.      (cat "\nIm Falle eines ernsten Fehlers auf Ihrer Festplatte ist"
  25.           " DiskSalv auf Ihrer Festplatte eventuell nicht mehr startbar."
  26.           " Dieses Hilfsprogramm erzeugt eine bootfähige Diskette,"
  27.           " die Sie in einem solchen Fall in die Lage versetzt, mit"
  28.           " DiskSalv 4 die Fehler auf Ihrer Festplatte zu reparieren."))
  29.  
  30. (set #which-disk
  31.      "Auf welchem Diskettenlaufwerk soll DiskSalv installiert werden?")
  32.  
  33. (set #any-locale
  34.      (cat "\nInstall DiskSalv Sprachen"
  35.           "\n\nDie Kataloge für die deutsche Sprache können in"
  36.           " Ihrem Locale-Verzeichnis installieren."
  37.           "\n\nMöchten Sie damit fortfahren?"))
  38.  
  39. (set #any-locale-help
  40.      (cat "\nDiskSalv kann in verschiedenen Sprachen verwendet werden,"
  41.           " sofern die entsprechenden Katalog-Dateien installiert sind."
  42.           "\n\nWenn Sie hiermit fortfahren, werden die vorhandenen Kataloge"
  43.           " auf Ihrem System installiert."
  44.           "\n\nBemerkung: Auf dieser CD befinden sich nur die deutschen"
  45.           " Kataloge."))
  46.  
  47. (set #which-language "\nWelche Kataloge sollen installiert werden?")
  48.  
  49. (set #which-language-help
  50.      (cat "\nDiskSalv kann in verschiedenen Sprachen verwendet werden,"
  51.           " sofern die entsprechenden Katalog-Dateien installiert sind."
  52.           "\n\nBemerkung: Auf dieser CD befinden sich nur die deutschen"
  53.           " Kataloge."))
  54.  
  55. (set #subdir-catalog "locale/catalogs"
  56.      #outdisk-name   "DiskSalv Boot"
  57.      #dscatname      "DiskSalv.catalog"
  58.      #tmp-dir        "T:DiskSalv")
  59.  
  60. (set #get-dearchiver
  61.      (cat "\nBitte geben Sie den Dateinamen für ein Dekomprimierungsprogramm"
  62.           " für \"LHA\"-komprimierte Dateien an."))
  63.  
  64. (set #ds-done
  65.      (cat "\nDiskSalv Boot Disk wurde erstellt."
  66.           "\n\nEs wurde versucht, eine Boot-Diskette für Ihr System"
  67.           " zu erstellen. Bitte beachten Sie, daß eventuell noch"
  68.           " individuelle Dateien auf der Diskette fehlen, um Ihr System"
  69.           " vollständig zu booten. Bitte testen Sie die Diskette umgehend auf"
  70.           " ihre korrekte Funktion."))
  71.  
  72. ;======================================================================
  73. ;
  74. ; This function does the actual formatting of the given "outputdisk".
  75. ;
  76.  
  77. (procedure FORMATDISK
  78.     (if (askbool (prompt (cat "\nBitte legen Sie die zu formatierende Diskette "
  79.                               "in das Laufwerk " outputdisk))
  80.                      (choices "Ok" "Abbruch")
  81.                      (help "\nBitte wählen Sie das Diskettenlaufwerk für die Installation.\n")
  82.                      (default 1))
  83.         ((working "Formatiere Diskette " outputdisk " unter dem Namen \"" #outdisk-name "\"")
  84.          (run (cat "SYS:System/Format <NIL: >\"CON:10/10/500/50/Formatting...\" DRIVE " 
  85.                    outputdisk " NAME \"" #outdisk-name "\" NOICONS"))
  86.          (run (cat "C:Install DRIVE " outputdisk)))
  87.         (exit "Operation abgebrochen")))
  88.  
  89. ;======================================================================
  90. ;
  91. ; This function makes all the important directories for the DiskSalv
  92. ; boot disk.
  93. ;
  94.  
  95. (procedure MAKESYS
  96.    (working "Erzeuge System-Verzeichnisse")
  97.    (copyfiles (source  "C:")
  98.               (dest    (tackon outputdisk "C"))
  99.               (pattern (cat "(AddBuffers|AddDataTypes|Assign|BindDrivers|"
  100.                             "ConClip|Copy|Delete|Dir|Execute|IPrefs|List|"
  101.                             "LoadWB|MagTape|MakeDir|Mount|SetClock|"
  102.                             "SetPatch|Version|Wait)")))
  103.    (makedir (tackon outputdisk "Classes"))
  104.    (makedir (tackon outputdisk "Devs"))
  105.    (makedir (tackon outputdisk "Devs/DataTypes"))
  106.    (makedir (tackon outputdisk "Devs/Printers"))
  107.    (copyfiles (source  "Devs:DOSDrivers")
  108.               (dest    (tackon outputdisk "Devs/DOSDrivers"))
  109.               (pattern "#?"))
  110.    (copyfiles (source  "Devs:Keymaps")
  111.               (dest    (tackon outputdisk "Devs/Keymaps"))
  112.               (pattern "#?"))
  113.    (copyfiles (source  "Devs:Monitors")
  114.               (dest    (tackon outputdisk "Devs/Monitors"))
  115.               (pattern "((Dbl|%)(PAL|NTSC)|MultiScan|VGAOnly)")
  116.               (infos))
  117.    (copyfiles (source  "Devs:")
  118.               (dest    (tackon outputdisk "Devs"))
  119.               (pattern "system-configuration"))
  120.    (copyfiles (source  "SYS:Expansion")
  121.               (dest    (tackon outputdisk "Expansion"))
  122.               (pattern "#?"))
  123.    (makedir (tackon outputdisk "Fonts"))
  124.    (copyfiles (source  "L:")
  125.               (dest    (tackon outputdisk "L"))
  126.               (pattern "#?FileSystem"))
  127.    (copyfiles (source  "Libs:")
  128.               (dest    (tackon outputdisk "Libs"))
  129.               (pattern "(68040|amigaguide|asl|diskfont|iffparse|locale|version).library"))
  130.    (makedir (tackon outputdisk "Locale"))
  131.    (makedir (tackon outputdisk "Locale/Catalogs"))
  132.    (copyfiles (source  "Locale:Countries")
  133.               (dest    (tackon outputdisk "Locale/Countries"))
  134.               (pattern "#?"))
  135.    (copyfiles (source  "Locale:Languages")
  136.               (dest    (tackon outputdisk "Locale/Languages"))
  137.               (pattern "#?"))
  138.    (makedir (tackon outputdisk "Prefs"))
  139.    (makedir (tackon outputdisk "Prefs/Env-Archive"))
  140.    (copyfiles (source  "ENVARC:Sys")
  141.               (dest    (tackon outputdisk "Prefs/Env-Archive/Sys"))
  142.               (pattern "(pointer|locale|palette|wbconfig).(ilbm|prefs)"))
  143.    (copyfiles (source  "S:")
  144.               (dest    (tackon outputdisk "S"))
  145.               (pattern "Startup-Sequence"))
  146.    (makedir (tackon outputdisk "System"))
  147.    (makedir (tackon outputdisk "T"))
  148.    (makedir (tackon outputdisk "Tools"))
  149.    (makedir (tackon outputdisk "Utilities"))
  150.    (makedir (tackon outputdisk "WBStartup"))
  151. )
  152.  
  153. ;======================================================================
  154. ;
  155. ; This function asks about the language, and sets the global "lang" to
  156. ; the language bit mask returned by the request.
  157. ;
  158.  
  159. (procedure ASKLANGUAGE
  160.     (set lang (askoptions (prompt #which-language)
  161.                           (help #which-language-help)
  162.                           (choices "deutsch"
  163.                                    "english")
  164.                           (default 0))))
  165.     
  166. ;======================================================================
  167. ;
  168. ; This function finds a de-archiver in the user's system, resulting to
  169. ; a panic "ask-the-user" if none can be found.
  170. ;
  171.  
  172. (procedure FINDARCPROG
  173.    (set n 0)
  174.    (while (set test (select n "lharc"
  175.                               "lha"
  176.                               "lz"
  177.                               ""))
  178.       (if (not (run (cat "which " test)))
  179.           (set arcprog test))
  180.       (set n (+ n 1)))
  181.  
  182.    (if (= arcprog "")
  183.        (set arcprog (askfile (prompt #get-dearchiver)
  184.                              (help @askfile-help)
  185.                              (default "C:"))))
  186. )
  187.  
  188. ;======================================================================
  189. ;
  190. ; This function gets the locale file information.  We mark the occasion
  191. ; with bit 0 set for the availability of the subdirectory, bit 1 set 
  192. ; for the availability of the archive file. 
  193. ;
  194.  
  195. (procedure ANYLOCALE
  196.    (set localecode 0)
  197.    (if (exists locale-catalogs)
  198.        (set localecode 1))
  199.    (if (exists locale-archive)
  200.        (set localecode (+ localecode 2)))
  201.    localecode)
  202.  
  203. ;======================================================================
  204. ;
  205. ; This function transfers a locale file from the appropriate archive
  206. ; entry to the proper LOCALE:Catalogs subdirectory.
  207. ;
  208.  
  209. (procedure DOCATARCS
  210.    (if (= arcprog "") (FINDARCPROG))
  211.    (if (<> arcprog "")
  212.        ((working "\nDe-archiving selected catalogs\n")
  213.     (makedir #tmp-dir)
  214.         (set arcsfiles (cat #subdir-catalog "/(" arclst ")/#?"))
  215.         (set dearc-com (cat arcprog " >NIL: <NIL: e " locale-archive " "
  216.                             arcsfiles))
  217.         (set script (tackon #tmp-dir "de-archive-script"))
  218.         (textfile (dest script)
  219.                   (append (cat "cd " #tmp-dir "\n" dearc-com "\n")))
  220.         (execute script)
  221.         (copyfiles (source (tackon #tmp-dir #subdir-catalog))
  222.                    (dest   output-catalog)
  223.                    (pattern "#?"))
  224.         (run (cat "Delete >NIL: <NIL: " #tmp-dir " all")))))
  225.  
  226. ;======================================================================
  227. ;
  228. ; This function transfers the locale files from the appropriate 
  229. ; existing subdirectories (in "sublst")  to the corresponding
  230. ; LOCALE:Catalogs subdirectories.
  231. ;
  232.  
  233. (procedure DOCATSUBS
  234.    (copyfiles (source locale-catalogs)
  235.               (dest   output-catalog)
  236.               (pattern (cat "(" sublst ")"))))
  237.  
  238. ;======================================================================
  239. ;
  240. ; This function selects the language to be installed.
  241. ;
  242.  
  243. (procedure DOLOCALE
  244.    (set n      0
  245.         sublst ""
  246.         arclst "")
  247.    (while (set language (select n "deutsch"
  248.                                   "english"
  249.                                   ""))
  250.      (if (AND (IN lang n) (<> n 2))
  251.         (if (exists (tackon locale-catalogs (tackon language #dscatname)))
  252.             (if (= sublst "") (set sublst language) (set sublst (cat sublst "|" language)))
  253.             (if (= arclst "") (set arclst language) (set arclst (cat arclst "|" language)))))
  254.      (set n (+ n 1)))
  255.    (if (AND (IN localecode 0) (<> sublst "")) (DOCATSUBS))
  256.    (if (AND (IN localecode 1) (<> arclst "")) (DOCATARCS)))
  257.  
  258. ;======================================================================
  259. ;
  260. ; This procedure asks about installation of catalogs.
  261. ;
  262.  
  263.  
  264. (procedure ASKLOCALE
  265.     (if (ANYLOCALE)
  266.         (if (askbool (prompt #any-locale)
  267.                      (help #any-locale-help)
  268.                      (choices "Ja" "Schritt überspringen")
  269.                      (default 1))
  270.                   
  271.             ((set askmode 0)
  272.              (ASKLANGUAGE)
  273.              (DOLOCALE)))))
  274.  
  275. ;======================================================================
  276. ;
  277. ; The main program
  278.  
  279. (set inputdir          (pathonly @icon))
  280. (set locale-archive    (tackon inputdir "DSLocale.lha")
  281.      locale-catalogs   (tackon inputdir #subdir-catalog)
  282.      arcprog           ""
  283.      @default-dest     "DF0:")
  284.  
  285. ; First, lets put the DiskSalv stuff in place on a formatted disk.
  286.  
  287. (if (askbool (prompt #disksalv-install)
  288.          (help #disksalv-install-help)
  289.              (choices "Ok" "Abbruch")
  290.              (default 1))
  291.    ((set outputdisk  
  292.           (askdir (prompt  #which-disk)
  293.           (help    @askdir-help)
  294.           (default @default-dest)))
  295.      (set @default-dest outputdisk)
  296.      (FORMATDISK)
  297.      (copyfiles (source inputdir)
  298.                 (dest outputdisk)
  299.                 (pattern "DiskSalv")
  300.                 (files)
  301.                 (infos))
  302.      (tooltype  (dest (tackon outputdisk "DiskSalv"))
  303.                 (noposition))
  304.      (MAKESYS)
  305.      (set output-catalog (tackon outputdisk #subdir-catalog))
  306.      (ASKLOCALE)
  307.      (message #ds-done))
  308.     (set @default-dest ""))
  309.  
  310.  
  311.